package day10;
//此类是用于验证abstract抽象类的方法
public class Test02 {
    public static void main(String[] args) {
//        Animal a = new Animal(); //abstract抽象类不能被实例化也就是不可以创建对象
        //Pig p = new Pig();    //子类可以被实例化，可以被创建第项，抽象方法已被重写
        //验证多态的特点，此处先了解即可
        //父类是abstract抽象类，无法创建对象
        //这时候就可以使用子类来创建对象，简介调用父类中的方法（子类已通过重写成为普通类）父类引用指向了子类变量
        Animal a = new Pig();
        a.eat();
        a.play();
        a.fly();

    }
}

//1创建名为Animald的抽象父类
abstract class  Animal{
    //3.1创建普通方法
    public void eat(){
        System.out.println("吃啥哦都行");
    }
    public void play(){
        System.out.println("玩啥都行");
    }
    abstract void fly();
}

//2创建一个Pig子类,此类是Animal的子类
class Pig extends Animal{
//    /*3.2当一个子类继承了抽象父类后，有两种解决办法‘
//    方案1.变成抽象子类，躺平，我也补实现，继续抽象（在子类前方继续加上abstract）
//    方案2，实现重写抽象父类中的所有抽象方法，变成普通类
//    //总之，子类必须处理，2选1 继续抽象或者实现父类的抽象方法
//    */
//     */
    @Override
    public void fly(){
        System.out.println("我实现父类的抽象方法");
    }
}